草庐IT

Android AudioRecord 和 MediaRecorder

全部标签

android - 使用 camera2 和 MediaRecorder 捕获视频

我尝试同时录制2种不同分辨率的视频。有时一切顺利,有时应用程序似乎卡在2个MediaRecorder的stop()方法中。有人可以查看我的代码,看看我做错了什么吗?packagecom.example.android.videorecording;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.content.Intent;importandroid.hardware.camera2.params.StreamConfigurationMap;importandroid.media.Media

android - MediaRecorder 捕获的音频文件在使用 Retrofit 2 发送到服务器后损坏

我的应用程序录制了一个音频fragment,并在录制完成后使用Retrofit2将fragment发送到服务器。服务器接收到文件,但是文件损坏了,我说的损坏是无法播放。我使用以下URL(示例url:mydomain.co/audio/myaudio.mp4)播放音频剪辑,我尝试使用postman播放另一个音频文件,音频文件可以播放成功。此外,即使通过Filezilla下载android捕获的音频fragment也有同样的损坏文件。这是我录制音频的方式:privatevoidstartRecordingAudio(){Log.d("audiorecording","recordingso

android - android MediaRecorder 中的 Moov atom 记录数据

我有一个问题:我在我的Android应用程序中使用MediaRecorder从相机记录数据。我将它保存在套接字中,而不是文件中。此数据的长度可能不同。在套接字连接的另一端,我将它保存在文件中。连接可能会在任何意外的时刻中断。因此,在android套接字断开连接后,我尝试使用ffmpeg解码接收到的数据。但据我所知,它无法在此文件中找到moov原子。我读过一些关于moov的信息,所以我认为MediaRecorder将moovatom放在文件末尾。但如果记录被中断,则跳过写入moovatom。我还读到,对于长度未知的数据(渐进式加载、流式传输),可以在文件开头写入moovatom。如何将自

android - MediaRecorder 抛出 illegalstateexception

我正在尝试开发一个简单的android录音机。一切都构建良好,它在android设备上也运行良好。好像我可以开始录制但是当我想停止它时抛出一个IllegalStateException。我找不到错误。这是代码:publicclassVoiceRecorder{MediaRecorderrecorder=newMediaRecorder();staticContextcont;publicvoidstartRecord(Contextcontext)throwsIllegalStateException,IOException{cont=context;recorder.setAudio

android - 使用MediaRecorder android时如何在前后摄像头之间切换

如果有人知道在使用MediaRecorder时如何在前后摄像头之间切换。我为此功能定义了一个按钮,但不知道如何定义onclickListener。总Activity如下:importjava.io.File;importjava.io.IOException;importandroid.app.Activity;importandroid.content.Intent;importandroid.content.pm.ActivityInfo;importandroid.hardware.Camera;importandroid.media.MediaRecorder;importan

android - 使用 Android MediaRecorder 暂停和恢复(API 级别 < 24)

在使用MediaRecorder时,我们没有API级别低于24的暂停/恢复功能。所以有一种方法可以做到这一点:在暂停事件中停止记录器并创建记录的文件。在恢复时再次开始录制并创建另一个文件并继续这样做直到用户按下停止。最后合并所有文件。很多人在SO上问过这个问题,但无论如何都找不到解决这个问题的办法。人们谈论通过在暂停操作时停止录制并在恢复时重新启动来创建多个媒体文件。所以我的问题是我们如何以编程方式合并/加入所有媒体文件?注意:在我的例子中是MPEG4容器-m4a用于音频,mp4用于视频。我尝试使用SequenceInputStream合并各个生成的记录文件的多个InputStream

android - MediaRecorder.stop() 在三星 Galaxy 相机上挂起

在我的MediaRecorder上调用stop()在SamsungGalaxyCamera上无限期挂起。将此调用放在单独的线程中也无助于解决问题。Logcat不显示任何错误消息。但是,在SamsungGalaxyNexus上运行同一个应用程序不会出现任何问题。这是围绕我调用stop的代码:View.OnClickListenercaptureListener=newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){if(isRecording){//stoprecordingandreleasecameramMediaRe

java - 如果调用得太快,MediaRecorder start() 会失败

我正在尝试构建一个基本的摄像机,允许用户通过触摸屏幕快速拍摄视频,这看起来很简单,但我遇到的主要问题是AndroidMediaRecorder不允许快速启动和重新启动,而无需崩溃,如果用户拍摄然后停止然后再次快速恢复拍摄它总是崩溃我不确定是否有办法直接解决这个问题所以我还设计了另一种方法来实现这个通过尝试录制单个视频但试图获得对mediaRecorder实际写入文件的时间进行一些控制。但是我无法使用FileDescriptor使其完全运行,下面我将粘贴我的原始代码和我在第二次尝试控制写入时使用的方法,是否有任何方法可以调整任何代码以实现我之后的暂停功能?任何帮助都会有很长的路要走谢谢我

android - 在 onLongClickListener 中调用 MediaRecorder.start 时在 android.media.MediaRecorder.start 处出现 java.lang.IllegalStateException

我想在按住按钮时使用MediaRecorder开始录制语音消息。尝试在onLongClickListener中开始录制时出现IllegalStateException。如堆栈跟踪中所述,我收到的错误位于第219行:recorder.start()为什么会这样?btnSendVoice.setOnLongClickListener(newOnLongClickListener(){@OverridepublicbooleanonLongClick(Viewview){isVoiceButtonHeld=true;startRecording();returnfalse;}});btnSe

android - 通过 LocalSocket 从 MediaRecorder 流式传输视频

我正在尝试通过本地套接字从Android的MediaRecorder发送h264/AAC视频。目标是通过RTMP或RTSP将视频发送到WOWZA服务器,但这给我带来了很多麻烦,现在我只是试图将数据写入LocalServerSocket的文件。这是一些代码。抱歉,它不是很干净,但我花了几个小时测试很多东西,我的项目现在一团糟。在相机Activity中,输出文件设置:LocalSocketoutSocket=newLocalSocket();try{outSocket.connect(newLocalSocketAddress(LOCAL_SOCKET));}catch(Exception